package org.japo.java.entities;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

/**
 *
 * @author José A. Pacheco Ondoño - joanpaon@gmail.com
 */
@XmlRootElement(name = "matricula")
@XmlType(propOrder = {"expediente", "nombre", "apellidos", "nif", "ciclo",
    "curso1", "curso2", "curso3", "turnoM", "turnoV", "turnoN", "turnoD",
    "repetidor"})
public class Matricula implements Serializable {

    // Identificadores de propiedades
    public static final String PROP_EXPEDIENTE = "expediente";
    public static final String PROP_NOMBRE = "nombre";
    public static final String PROP_APELLIDOS = "apellidos";
    public static final String PROP_NIF = "nif";
    public static final String PROP_CICLO = "ciclo";
    public static final String PROP_CURSO1 = "curso1";
    public static final String PROP_CURSO2 = "curso2";
    public static final String PROP_CURSO3 = "curso3";
    public static final String PROP_TURNOM = "turnoM";
    public static final String PROP_TURNOV = "turnoV";
    public static final String PROP_TURNON = "turnoN";
    public static final String PROP_TURNOD = "turnoD";
    public static final String PROP_REPETIDOR = "repetidor";

    // Propiedades del Bean
    private String expediente;
    private String nombre;
    private String apellidos;
    private Nif nif;
    private String ciclo;
    private boolean curso1;
    private boolean curso2;
    private boolean curso3;
    private boolean turnoM;
    private boolean turnoV;
    private boolean turnoN;
    private boolean turnoD;
    private boolean repetidor;

    // Soporte para cambio de propiedad
    private final transient PropertyChangeSupport propertyChangeSupport
            = new java.beans.PropertyChangeSupport(this);

    public Matricula() {
        expediente = "0";
        nombre = "nombre";
        apellidos = "apellidos";
        nif = new Nif();
        ciclo = "";
        curso1 = true;
        curso2 = false;
        curso3 = false;
        turnoM = true;
        turnoV = false;
        turnoN = false;
        turnoD = false;
        repetidor = false;
    }

    public Matricula(String expediente, String nombre, String apellidos,
            Nif nif, String ciclo, boolean curso1, boolean curso2,
            boolean curso3, boolean turnoM, boolean turnoV, boolean turnoN,
            boolean turnoD, boolean repetidor) {
        this.expediente = expediente;
        this.nombre = nombre;
        this.apellidos = apellidos;
        this.nif = nif;
        this.ciclo = ciclo;
        this.curso1 = curso1;
        this.curso2 = curso2;
        this.curso3 = curso3;
        this.turnoM = turnoM;
        this.turnoV = turnoV;
        this.turnoN = turnoN;
        this.turnoD = turnoD;
        this.repetidor = repetidor;
    }

    public String getExpediente() {
        return expediente;
    }

    public void setExpediente(String expediente) {
        java.lang.String oldExpediente = this.expediente;
        this.expediente = expediente;
        propertyChangeSupport.firePropertyChange(PROP_EXPEDIENTE,
                oldExpediente, expediente);
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        java.lang.String oldNombre = this.nombre;
        this.nombre = nombre;
        propertyChangeSupport.firePropertyChange(PROP_NOMBRE,
                oldNombre, nombre);
    }

    public String getApellidos() {
        return apellidos;
    }

    public void setApellidos(String apellidos) {
        java.lang.String oldApellidos = this.apellidos;
        this.apellidos = apellidos;
        propertyChangeSupport.firePropertyChange(PROP_APELLIDOS,
                oldApellidos, apellidos);
    }

    public Nif getNif() {
        return nif;
    }

    public void setNif(Nif nif) {
        org.japo.java.entities.Nif oldNif = this.nif;
        this.nif = nif;
        propertyChangeSupport.firePropertyChange(PROP_NIF, oldNif, nif);
    }

    public String getCiclo() {
        return ciclo;
    }

    public void setCiclo(String ciclo) {
        java.lang.String oldCiclo = this.ciclo;
        this.ciclo = ciclo;
        propertyChangeSupport.firePropertyChange(PROP_CICLO, oldCiclo, ciclo);
    }

    public boolean isCurso1() {
        return curso1;
    }

    public void setCurso1(boolean curso1) {
        boolean oldCurso1 = this.curso1;
        this.curso1 = curso1;
        propertyChangeSupport.firePropertyChange(PROP_CURSO1,
                oldCurso1, curso1);
    }

    public boolean isCurso2() {
        return curso2;
    }

    public void setCurso2(boolean curso2) {
        boolean oldCurso2 = this.curso2;
        this.curso2 = curso2;
        propertyChangeSupport.firePropertyChange(PROP_CURSO2,
                oldCurso2, curso2);
    }

    public boolean isCurso3() {
        return curso3;
    }

    public void setCurso3(boolean curso3) {
        boolean oldCurso3 = this.curso3;
        this.curso3 = curso3;
        propertyChangeSupport.firePropertyChange(PROP_CURSO3,
                oldCurso3, curso3);
    }

    public boolean isTurnoM() {
        return turnoM;
    }

    public void setTurnoM(boolean turnoM) {
        boolean oldTurnoM = this.turnoM;
        this.turnoM = turnoM;
        propertyChangeSupport.firePropertyChange(PROP_TURNOM,
                oldTurnoM, turnoM);
    }

    public boolean isTurnoV() {
        return turnoV;
    }

    public void setTurnoV(boolean turnoV) {
        boolean oldTurnoV = this.turnoV;
        this.turnoV = turnoV;
        propertyChangeSupport.firePropertyChange(PROP_TURNOV,
                oldTurnoV, turnoV);
    }

    public boolean isTurnoN() {
        return turnoN;
    }

    public void setTurnoN(boolean turnoN) {
        boolean oldTurnoN = this.turnoN;
        this.turnoN = turnoN;
        propertyChangeSupport.firePropertyChange(PROP_TURNON,
                oldTurnoN, turnoN);
    }

    public boolean isTurnoD() {
        return turnoD;
    }

    public void setTurnoD(boolean turnoD) {
        boolean oldTurnoD = this.turnoD;
        this.turnoD = turnoD;
        propertyChangeSupport.firePropertyChange(PROP_TURNOD,
                oldTurnoD, turnoD);
    }

    public boolean isRepetidor() {
        return repetidor;
    }

    public void setRepetidor(boolean repetidor) {
        boolean oldRepetidor = this.repetidor;
        this.repetidor = repetidor;
        propertyChangeSupport.firePropertyChange(PROP_REPETIDOR,
                oldRepetidor, repetidor);
    }

    public void addPropertyChangeListener(PropertyChangeListener listener) {
        propertyChangeSupport.addPropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
        propertyChangeSupport.removePropertyChangeListener(listener);
    }
}
